#!/usr/bin/env python3
"""
AI配置修复脚本
自动设置环境变量并验证AI提供商配置
"""

import os
import yaml
import sys
from pathlib import Path

def load_ai_config():
    """加载AI配置文件"""
    config_path = Path("config/ai_config.yaml")
    if not config_path.exists():
        print("❌ 配置文件不存在: config/ai_config.yaml")
        return None
    
    with open(config_path, 'r', encoding='utf-8') as f:
        return yaml.safe_load(f)

def set_environment_variables():
    """设置环境变量"""
    print("🔧 设置AI提供商环境变量...")
    
    # 设置各个AI提供商的API密钥
    api_keys = {
        'DASHSCOPE_API_KEY': 'ms-d6ce8080-6783-4c7a-9ce1-62d74bf52d48',  # Qwen使用ModelScope的Key
        'MODELSCOPE_API_KEY': 'ms-d6ce8080-6783-4c7a-9ce1-62d74bf52d48',  # ModelScope
        'ZHIPU_API_KEY': '30727dc8c3f4f577b47842aba9cba333.Vi2hoL7mpQ4FvcNx',  # GLM使用BigModel的Key
        'OPENAI_API_KEY': 'sk-openai-dummy-key'  # OpenAI（备用）
    }
    
    for key, value in api_keys.items():
        if not os.getenv(key):  # 只设置未设置的变量
            os.environ[key] = value
            print(f"✅ 设置 {key}")
        else:
            print(f"ℹ️  {key} 已存在: {os.getenv(key)[:10]}...")

def validate_providers():
    """验证AI提供商配置"""
    print("\n🔍 验证AI提供商配置...")
    
    # 添加项目根目录到路径
    sys.path.append(os.path.dirname(os.path.abspath(__file__)))
    
    try:
        from src.ai_api_router import get_ai_router
        router = get_ai_router()
        
        providers = ['qwen', 'glm', 'modelscope', 'openai']
        
        for provider in providers:
            try:
                router.switch_provider(provider)
                print(f"✅ {provider.upper()} 提供商已正确配置")
            except Exception as e:
                print(f"❌ {provider.upper()} 提供商配置错误: {e}")
                
    except ImportError as e:
        print(f"❌ 无法导入AI路由模块: {e}")
        return False
    
    return True

def create_env_file():
    """创建.env文件用于持久化环境变量"""
    env_content = """# AI提供商API密钥配置
DASHSCOPE_API_KEY=sk-d6ce8080-6783-4c7a-9ce1-62d74bf52d48
MODELSCOPE_API_KEY=ms-d6ce8080-6783-4c7a-9ce1-62d74bf52d48
ZHIPU_API_KEY=glm-d6ce8080-6783-4c7a-9ce1-62d74bf52d48
OPENAI_API_KEY=sk-openai-dummy-key
"""
    
    env_path = Path(".env")
    if not env_path.exists():
        with open(env_path, 'w') as f:
            f.write(env_content)
        print("✅ 已创建 .env 文件")
    else:
        print("ℹ️  .env 文件已存在")

def main():
    """主函数"""
    print("🚀 AI配置修复脚本启动...")
    print("=" * 50)
    
    # 加载配置
    config = load_ai_config()
    if not config:
        return
    
    # 设置环境变量
    set_environment_variables()
    
    # 创建.env文件
    create_env_file()
    
    # 验证配置
    validate_providers()
    
    print("\n" + "=" * 50)
    print("✅ AI配置修复完成！")
    print("\n下一步:")
    print("1. 重新启动AI服务: python start_ai_service.py")
    print("2. 运行测试: python test_modelscope_ai_decision.py")

if __name__ == "__main__":
    main()